/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package praticas.projeto.beans;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

/**Classe usuario, com atributos nome, login, senha, descricao, estado civil,
 * aniversario, lista de amigos, lista de amigos pendentes!
 *
 * @author Windows
 */
public class Usuario implements Serializable{

    private String nome;
    private String login;
    private String senha;
    private String descricao;
    private String estadoCivil;
    private String aniversario;
    private String cidadeNatal;
    private List<Usuario> amigos = new LinkedList<Usuario>();
    private List<Usuario> pendentes = new LinkedList<Usuario>();
    
/*Construtor da classe usuario passando login, senha e nome como parametros!
 *
 */
    public Usuario(String login, String senha, String nome) {
        this.nome = nome;
        this.login = login;
        this.senha = senha;
    }
    /*
     * Construtor vazio da classe usuario!
     */
    public Usuario(){
        
    }
    /*
    * Metodo getListAmigos que retorna a lista de amigos do usuario!
    */
    public List<Usuario> getListAmigos() {
        return amigos;
    }
    /*metodo do Tipo String:
     * Retorna os amigos adicionado na lista de cada usuario! Retorna um string!
     */
    public String getAmigos(){
        
        String resultado = "{";
        for (Usuario u : amigos) {
            resultado += u.getLogin() + ",";
        }
        if(resultado.equals("{")){
            return resultado +="}";
        }
        resultado = resultado.substring(0, resultado.length() - 1);
        resultado += "}";
        return resultado;
    }
    /*
     * Retorna uma lista de amigos pendentes, ou seja, que ainda não foram adicionados na lista de amigos!
     */
    public List<Usuario> getPendentes() {
        return pendentes;
    }
    /*
     * Modifica a data de aniversario, passando-o como parametro!
     */
    public void setAniversario(String aniversario) {
        this.aniversario = aniversario;
    }
    /*
     * Modifica a cidade natal, passando-o como parametro!
     */
    public void setCidadeNatal(String cidadeNatal) {
        this.cidadeNatal = cidadeNatal;
    }
    /*
     * modifica a descrição, passando-o como parametro!
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    /*
     * modifica o estado civil, passando-o como parametro!
     */
    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }
    /*
     * Retorna a data de aniversario do usuario!
     */
    public String getAniversario() {
        return aniversario;
    }
    /*
     * retorna a cidade natal!
     */
    public String getCidadeNatal() {
        return cidadeNatal;
    }
    /*
     * retorna a descricao do usuario!
     */
    public String getDescricao() {
        return descricao;
    }
    /*
     * retorna o estado civil!
     */
    public String getEstadoCivil() {
        return estadoCivil;
    }
    /*
     * retorna o login!
     */
    public String getLogin() {
        return login;
    }
    /*
     * retorna o nome!
     */
    public String getNome() {
        return nome;
    }
    /*
     * retorna a senha!
     */
    public String getSenha() {
        return senha;
    }
    /*
     * metodo equal da classe usuario, onde um usuario sera igual ao outro se somente se seus logins forem iguais!
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj instanceof Usuario) {
            Usuario aux = (Usuario) obj;
            return aux.getLogin().equals(this.getLogin());
        }
        return false;
    }
    /*
     * metodo toString da classe usuario que retorna o nome, login, descrição e cidade natal!
     */
    @Override
    public String toString() {
        return "USUARIO: " + this.nome + " - LOGIN: " + this.login + " - DESCRIÇÃO: " + this.descricao + " - CIDADE: " + this.cidadeNatal;
    }

}
